package com.ktgj.train.mapper;

import java.util.List;

import com.ktgj.train.domain.TrainCRMOrder;
import com.ktgj.train.domain.TrainChangeOrder;
import com.ktgj.train.domain.TrainOrderRefundrecord;
import com.ktgj.train.domain.TrainChangeOrderVO;
import org.apache.ibatis.annotations.Param;

/**
 * 退票记录Mapper接口
 * 
 * @author ruoyi
 * @date 2021-11-29
 */
public interface TrainOrderRefundrecordMapper 
{
    /**
     * 查询退票记录
     * 
     * @param recordid 退票记录ID
     * @return 退票记录
     */
    public TrainOrderRefundrecord selectTrainOrderRefundrecordById(Long recordid);

    /**
     * 查询退票记录(merchantOrderId)
     *
     * @param merchantOrderId 商户订单号
     * @return 退票记录
     */
    public List<TrainOrderRefundrecord> queryTrainOrderRefundrecord(String merchantOrderId);

    /**
     * 查询退票记录列表
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 退票记录集合
     */
    public List<TrainOrderRefundrecord> selectTrainOrderRefundrecordList(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 查询退票记录列表
     *
     * @param orderId 退票记录
     * @return 退票记录集合
     */
    public List<TrainOrderRefundrecord> queryTrainOrderRefundrecordList(@Param("orderId") Long orderId, @Param("changeType") String changeType);

    /**
     * 新增退票记录
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int insertTrainOrderRefundrecord(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateTrainOrderRefundrecord(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录（子订单编号）
     *
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateByOrderItemId(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录（订单编号）
     *
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateByOrderId(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 删除退票记录
     * 
     * @param recordid 退票记录ID
     * @return 结果
     */
    public int deleteTrainOrderRefundrecordById(Long recordid);

    /**
     * 批量删除退票记录
     * 
     * @param recordids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTrainOrderRefundrecordByIds(Long[] recordids);

    /**
     * 根据旧票号修改
     * */
    public int updateTrainOrderRefundrecordByOrderId(TrainOrderRefundrecord trainOrderRefundrecord);

    public int updateBymerchantOrderId(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 查询改签记录列表
     *
     * @param order
     * @return 退票记录
     */
    public List<TrainChangeOrderVO> queryTrainChangeOrderList(TrainCRMOrder order);

    public TrainOrderRefundrecord queryRecordid(String ticketNumber);

    /**
     * 获取改签成功但未支付的订单
     * */
    public List<TrainOrderRefundrecord> rebookPayTrainOrder();

    /**
     * 获取火车票改签用预留款
     */
    public TrainOrderRefundrecord amount(Long orderid);

    /**
     * 根据商户订单号查询退改签信息
     * @param merchantorderId
     * @return
     */
    public List<TrainOrderRefundrecord> queryTrainOrderRefundrecordByOldTicketNo(String merchantorderId);
}
